
package com.rasenhund.android.grecorder.activity;

import java.util.ArrayList;

import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;

import com.rasenhund.android.grecorder.R;
import com.rasenhund.android.grecorder.adapter.StageListAdapter;
import com.rasenhund.android.grecorder.common.Const;
import com.rasenhund.android.grecorder.common.Const.STAGE;
import com.rasenhund.android.grecorder.dao.RecordDao;
import com.rasenhund.android.grecorder.helper.DbHelper;
import com.rasenhund.android.grecorder.schema.StageRecord;

/**
 * 結果表示画面
 */
public class ResultStageListActivity extends BaseActivity {
    @SuppressWarnings("unused")
    private static final String TAG = ResultStageListActivity.class.getSimpleName();
    private final ResultStageListActivity self = this;

    StageListAdapter mAdapter = null;
    ListView mLstResult = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.result_stage);

        // ヘッダ
        mTxtArmyEfsf = (TextView) findViewById(R.id.txtArmy_Efsf);
        mTxtArmyPoz = (TextView) findViewById(R.id.txtArmy_Poz);

        mLstResult = (ListView) findViewById(R.id.lstResultStage);

    }

    @Override
    protected void onResume() {
        super.onResume();

        // 軍属に応じてヘッダを変更
        setArmyHeaderVisibility(mArmyCd);

        // 一覧の再取得
        reloadList();

    }

    // // TODO: 軍属切り替えを実装してみたら思いの外もっさりしていたので高速化できるならしたい
    // /**
    // * オプションアイテムメニューが最初に表示されるときの処理
    // */
    // @Override
    // public boolean onCreateOptionsMenu(Menu menu) {
    //
    // // メニューに表示するレイアウトファイルを指定
    // getMenuInflater().inflate(R.menu.menu, menu);
    //
    // return super.onCreateOptionsMenu(menu);
    // }
    //
    // /**
    // * オプションアイテムメニューが選択されたときの処理
    // */
    // @Override
    // public boolean onOptionsItemSelected(MenuItem item) {
    //
    // // 連邦軍・ジオン軍を切り替え
    // changeCurrentArmy();
    //
    // // 一覧の再取得
    // reloadList();
    //
    // return super.onOptionsItemSelected(item);
    // }

    /********************
     * EventListener
     ********************/

    final OnItemClickListener lstResult_OnItemClickListener = new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            jumpCategory((int) id);
        }

    };

    /********************
     * Method
     ********************/
    /**
     * 一覧の再取得
     */
    private void reloadList() {

        // ステージ一覧の取得
        ArrayList<StageRecord> list = Const.getStageList(self);

        // 全件取得用のレコードを追加
        list.add(0, new StageRecord(STAGE.ALL, getStr(R.string.stage_all)));

        for (int i = 0; i < list.size(); i++) {
            getStageResult(list.get(i));
        }

        mAdapter = new StageListAdapter(self, list);

        mLstResult = (ListView) findViewById(R.id.lstResultStage);
        mLstResult.setOnItemClickListener(lstResult_OnItemClickListener);
        mLstResult.setAdapter(mAdapter);

    }

    /**
     * 戦績の取得
     * 
     * @param stage
     */
    private void getStageResult(StageRecord stage) {

        DbHelper dbHelper = null;
        SQLiteDatabase db = null;

        try {

            dbHelper = new DbHelper(self);
            db = dbHelper.getWritableDatabase();
            RecordDao dao = new RecordDao(db);

            // TODO: ステージ別にループするならgroup by しても良いのでは
            dao.getResult(stage, mArmyCd);

        } finally {
            if (db.isOpen()) {
                db.close();
            }
        }

        stage.calcPerWin();

    }

    /**
     * カテゴリ選択画面呼び出し
     */
    private void jumpCategory(int stageId) {

        Intent intent = new Intent(self, ResultCategoryActivity.class);
        intent.putExtra(Const.KEY.KEY_STAGE, stageId);
        startActivity(intent);

    }

    // // TODO: メニューと共通化できないか
    // /**
    // * 軍属の変更処理
    // */
    // private void changeCurrentArmy() {
    //
    // String sMsg = "";
    //
    // if (mArmyCd == Const.ARMY.EFSF) {
    //
    // mArmyCd = Const.ARMY.POZ;
    // sMsg = "ジオン公国軍に変更しました";
    //
    // } else if (mArmyCd == Const.ARMY.POZ) {
    //
    // mArmyCd = Const.ARMY.EFSF;
    // sMsg = "地球連邦軍に変更しました";
    //
    // }
    //
    // // // Preferenceに設定書込み
    // // setIntPreference(getStr(R.string.pref_key_current_army), mArmyCd);
    //
    // // Toast表示
    // Toast.makeText(self, sMsg, Toast.LENGTH_SHORT).show();
    //
    // }

}
